package cn.ilikes.tools.hbase.jpa.metadatas;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import org.slf4j.Logger;

import cn.ilikes.tools.logs.Loggerfactory;

public class DefultEntityMetaDataFactory implements IEntityMetaDataFactory {

	private Logger logger = Loggerfactory.instance(DefultEntityMetaDataFactory.class);

	//K: Entity Name or  Entity Class Name
	private Map<String, IEntityMetaData> entityMetaDataMap = new HashMap<String, IEntityMetaData>();

	@Override
	public IEntityMetaData selectIEntityMetaData(Class<?> clazz) {
		return entityMetaDataMap.get(clazz.getSimpleName());
	}

	@Override
	public IEntityMetaData selectIEntityMetaDataByEntityName(String entityName) {

		return entityMetaDataMap.get(entityName);
	}

	@Override
	public void loadIEntityMetaDatas(Class<?> entityClass, IEntityMetaData entityMetaData) {
		Loggerfactory.info(logger, "Entity Meta Data Factory load IEntity Meta Data : " + entityClass.getSimpleName() + "     " + entityMetaData);
		entityMetaDataMap.put(entityClass.getSimpleName(), entityMetaData);

	}

	@Override
	public Set<IEntityMetaData> listAllIEntityMetaData() {
		return new HashSet<IEntityMetaData>(entityMetaDataMap.values());
	}

}
